1#ifndef CARREAUYASUDA_DEF_hpp
2#define CARREAUYASUDA_DEF_hpp
4#include "CarreauYasuda_decl.hpp"
9 template <
class SC,
class LO,
class GO,
class NO>
12 this->params_ = params;
14 shearThinningModel_ = this->params_->sublist(
"Material").get(
"ShearThinningModel",
"");
15 characteristicTime = this->params_->sublist(
"Material").get(
"CharacteristicTime_Lambda", 0.);
16 fluid_index_n = this->params_->sublist(
"Material").get(
"FluidIndex_n", 1.);
17 nu_0 = this->params_->sublist(
"Material").get(
"ZeroShearRateViscosity_eta0", 0.);
18 nu_infty = this->params_->sublist(
"Material").get(
"InftyShearRateViscosity_etaInfty", 0.);
19 inflectionPoint = this->params_->sublist(
"Material").get(
"InflectionPoint_a", 1.);
20 shear_rate_limitZero = this->params_->sublist(
"Material").get(
"Numerical_ZeroValue_ShearRate", 1e-8);
25 template <
class SC,
class LO,
class GO,
class NO>
29 viscosity = this->nu_infty + (this->nu_0 - this->nu_infty) * (std::pow(1.0 + std::pow(this->characteristicTime * shearRate, this->inflectionPoint), (this->fluid_index_n - 1.0) / this->inflectionPoint));
30 this->viscosity_ = viscosity;
39 template <
class SC,
class LO,
class GO,
class NO>
43 if (std::abs(this->inflectionPoint - 2.0) < std::numeric_limits<double>::epsilon())
46 res = (-2.0) * (this->nu_0 - this->nu_infty) * (this->fluid_index_n - 1.0) * std::pow(this->characteristicTime, this->inflectionPoint) * std::pow(1.0 + std::pow(this->characteristicTime * shearRate, this->inflectionPoint), ((this->fluid_index_n - 1.0 - this->inflectionPoint) / this->inflectionPoint));
50 if (std::abs(shearRate) <= shear_rate_limitZero)
52 shearRate = shear_rate_limitZero;
54 res = (-2.0) * (this->nu_0 - this->nu_infty) * (this->fluid_index_n - 1.0) * std::pow(this->characteristicTime, this->inflectionPoint) * std::pow(shearRate, this->inflectionPoint - 2.0) * std::pow(1.0 + std::pow(this->characteristicTime * shearRate, this->inflectionPoint), ((this->fluid_index_n - 1.0 - this->inflectionPoint) / this->inflectionPoint));
58 template <
class SC,
class LO,
class GO,
class NO>
61 this->params_ = params;
63 shearThinningModel_ = this->params_->sublist(
"Material").get(
"ShearThinningModel",
"");
64 characteristicTime = this->params_->sublist(
"Material").get(
"CharacteristicTime_Lambda", 0.);
65 fluid_index_n = this->params_->sublist(
"Material").get(
"FluidIndex_n", 1.);
66 nu_0 = this->params_->sublist(
"Material").get(
"ZeroShearRateViscosity_eta0", 0.);
67 nu_infty = this->params_->sublist(
"Material").get(
"InftyShearRateViscosity_etaInfty", 0.);
68 inflectionPoint = this->params_->sublist(
"Material").get(
"InflectionPoint_a", 1.);
69 shear_rate_limitZero = this->params_->sublist(
"Material").get(
"Numerical_ZeroValue_ShearRate", 1e-8);
72 template <
class SC,
class LO,
class GO,
class NO>
75 std::cout <<
"************************************************************ " << std::endl;
76 std::cout <<
"-- Chosen material model ..." << this->shearThinningModel_ <<
" --- " << std::endl;
77 std::cout <<
"-- Specified material parameters:" << std::endl;
78 std::cout <<
"-- eta_0:" << this->nu_0 << std::endl;
79 std::cout <<
"-- eta_Infty:" << this->nu_infty << std::endl;
80 std::cout <<
"-- Fluid index n:" << this->fluid_index_n << std::endl;
81 std::cout <<
"-- Inflection point a:" << this->inflectionPoint << std::endl;
82 std::cout <<
"-- Characteristic time lambda:" << this->characteristicTime << std::endl;
83 std::cout <<
"************************************************************ " << std::endl;
CarreauYasuda(ParameterListPtr_Type parameters)
Constructor for CarreauYasuda.
Definition CarreauYasuda_def.hpp:10
void evaluateMapping(ParameterListPtr_Type params, double shearRate, double &viscosity) override
Update the viscosity according to a chosen shear thinning generalized newtonian constitutive equation...
Definition CarreauYasuda_def.hpp:26
void setParams(ParameterListPtr_Type params) override
Each constitutive model includes different material parameters which will be specified in parametersP...
Definition CarreauYasuda_def.hpp:59
void evaluateDerivative(ParameterListPtr_Type params, double shearRate, double &res) override
For Newton method and NOX we need additional term in Jacobian considering directional derivative of o...
Definition CarreauYasuda_def.hpp:40
void echoInformationMapping() override
Print parameter values used in model at runtime.
Definition CarreauYasuda_def.hpp:73
DifferentiableFuncClass(ParameterListPtr_Type parameters)
Definition DifferentiableFuncClass_def.hpp:10
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5