32 #ifndef OOMPH_GENERALISED_NEWTONIAN_CONSTITUTIVE_MODELS_HEADER 33 #define OOMPH_GENERALISED_NEWTONIAN_CONSTITUTIVE_MODELS_HEADER 46 template<
unsigned DIM>
64 second_invariant_of_rate_of_strain_tensor)=0;
70 (
const double& second_invariant_of_rate_of_strain_tensor)=0;
78 template<
unsigned DIM>
87 Viscosity_ratio(viscosity_ratio) {}
91 second_invariant_of_rate_of_strain_tensor)
93 return Viscosity_ratio;
98 (
const double& second_invariant_of_rate_of_strain_tensor)
116 template<
unsigned DIM>
133 Power_pt(power_pt), Regularisation_parameter_pt(reg_par_pt){}
136 second_invariant_of_rate_of_strain_tensor)
141 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
148 double measure_of_rate_of_strain=
149 sqrt(sign*second_invariant_of_rate_of_strain_tensor);
151 return pow((2.0*measure_of_rate_of_strain + *Regularisation_parameter_pt),
163 template<
unsigned DIM>
182 (
double* yield_stress_pt,
double* flow_index_pt,
183 double* regularisation_parameter_pt) :
185 Yield_stress_pt(yield_stress_pt), Flow_index_pt(flow_index_pt),
186 Regularisation_parameter_pt(regularisation_parameter_pt){}
189 second_invariant_of_rate_of_strain_tensor)
194 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
201 double measure_of_rate_of_strain=
202 sqrt(sign*second_invariant_of_rate_of_strain_tensor+
203 (*Regularisation_parameter_pt));
205 return (*Yield_stress_pt)/(2.0*measure_of_rate_of_strain)+
206 pow(2.0*measure_of_rate_of_strain,*Flow_index_pt-1.0);
211 (
const double& second_invariant_of_rate_of_strain_tensor)
216 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
228 return sign*pow(2.0,(*Flow_index_pt)-2.0)*((*Flow_index_pt)-1.0)*
229 pow(sign*second_invariant_of_rate_of_strain_tensor+
230 (*Regularisation_parameter_pt),
231 ((*Flow_index_pt)-1.0)/2.0-1.0)-sign*(*Yield_stress_pt)/
232 (4.0*pow(sign*second_invariant_of_rate_of_strain_tensor+
233 (*Regularisation_parameter_pt),3.0/2.0));
243 template<
unsigned DIM>
264 (
double* yield_stress_pt,
double* flow_index_pt,
265 double* critical_second_invariant_pt) :
267 Yield_stress_pt(yield_stress_pt), Flow_index_pt(flow_index_pt),
268 Critical_second_invariant_pt(critical_second_invariant_pt)
273 double cut_off_viscosity=calculate_cut_off_viscosity();
275 oomph_info <<
"HerschelBulkleyTanMilRegConstitutiveEquation: " 276 <<
" cutoff viscosity = " << cut_off_viscosity
280 <<
" cutoff invariant = " 281 << *Critical_second_invariant_pt
288 return (*Yield_stress_pt)/
289 (2.0*sqrt((*Critical_second_invariant_pt)))+
290 pow((2.0*sqrt((*Critical_second_invariant_pt))),
296 double& cut_off_viscosity)
298 cut_off_invariant=*Critical_second_invariant_pt;
299 cut_off_viscosity=calculate_cut_off_viscosity();
305 second_invariant_of_rate_of_strain_tensor)
310 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
319 if(sign*second_invariant_of_rate_of_strain_tensor <
320 (*Critical_second_invariant_pt))
322 return calculate_cut_off_viscosity();
328 double measure_of_rate_of_strain=
329 sqrt(sign*second_invariant_of_rate_of_strain_tensor);
331 return (*Yield_stress_pt)/(2.0*measure_of_rate_of_strain)+
332 pow((2.0*measure_of_rate_of_strain),*Flow_index_pt-1.0);
338 (
const double& second_invariant_of_rate_of_strain_tensor)
343 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
348 if(sign*second_invariant_of_rate_of_strain_tensor <
349 (*Critical_second_invariant_pt))
355 return sign*pow(2.0,(*Flow_index_pt)-2.0)*((*Flow_index_pt)-1.0)*
356 pow(sign*second_invariant_of_rate_of_strain_tensor,
357 ((*Flow_index_pt)-1.0)/2.0-1.0)-sign*(*Yield_stress_pt)/
358 (4.0*pow(sign*second_invariant_of_rate_of_strain_tensor,3.0/2.0));
370 template<
unsigned DIM>
392 (
double* yield_stress_pt,
double* flow_index_pt,
393 double* critical_second_invariant_pt) :
395 Yield_stress_pt(yield_stress_pt), Flow_index_pt(flow_index_pt),
396 Critical_second_invariant_pt(critical_second_invariant_pt)
400 double cut_off_viscosity=calculate_cutoff_viscosity();
403 double zero_shear_viscosity=calculate_zero_shear_viscosity();
405 oomph_info <<
"HerschelBulkleyTanMilRegWithBlendingConstitutiveEquation: " 406 <<
" zero shear viscosity = " << zero_shear_viscosity
409 oomph_info <<
"HerschelBulkleyTanMilRegWithBlendingConstitutiveEquation: " 410 <<
" cut off viscosity = " << cut_off_viscosity
414 <<
" cutoff invariant = " 415 << *Critical_second_invariant_pt
427 return (*Yield_stress_pt)/
428 (2.0*sqrt((*Critical_second_invariant_pt)))+
429 pow((2.0*sqrt((*Critical_second_invariant_pt))),
438 return cut_off_viscosity/5.0;
445 double cut_off_viscosity=calculate_cutoff_viscosity();
449 double epsilon=calculate_viscosity_offset_at_zero_shear(cut_off_viscosity);
451 return cut_off_viscosity+epsilon;
456 double& cut_off_viscosity,
457 double& zero_shear_viscosity)
459 cut_off_invariant=*Critical_second_invariant_pt;
460 cut_off_viscosity=calculate_cutoff_viscosity();
461 zero_shear_viscosity=calculate_zero_shear_viscosity();
468 double Cut_off_viscosity=calculate_cutoff_viscosity();
471 double epsilon=calculate_viscosity_offset_at_zero_shear(Cut_off_viscosity);
473 a=-1.0/pow((*Critical_second_invariant_pt),4.0)*
474 (pow((*Critical_second_invariant_pt),2.0)*
475 (-pow(2.0,((*Flow_index_pt)-2.0))*((*Flow_index_pt)-1.0)*
476 pow((*Critical_second_invariant_pt),
477 (((*Flow_index_pt)-1.0)/2.0-1.0))+
478 (*Yield_stress_pt)/(4.0*pow((*Critical_second_invariant_pt),
480 2.0*(*Critical_second_invariant_pt)*
481 (Cut_off_viscosity+epsilon-pow(2.0,((*Flow_index_pt)-1.0))*
482 pow((*Critical_second_invariant_pt),(((*Flow_index_pt)-1.0)/2.0))-
483 (*Yield_stress_pt)/(2.0*sqrt((*Critical_second_invariant_pt)))));
485 b=-1.0/(8.0*pow((*Critical_second_invariant_pt),5.0)*
486 pow((*Critical_second_invariant_pt),(7.0/2.0)))*
487 (24.0*epsilon*pow((*Critical_second_invariant_pt),3.0)*
488 pow((*Critical_second_invariant_pt),(7.0/2.0))+
489 24.0*Cut_off_viscosity*pow((*Critical_second_invariant_pt),3.0)*
490 pow((*Critical_second_invariant_pt),(7.0/2.0))-
491 pow(2.0,((*Flow_index_pt)+1.0))*
492 pow((*Critical_second_invariant_pt),4.0)*
493 pow((*Critical_second_invariant_pt),(((*Flow_index_pt)+4.0)/2.0))+
494 pow(2.0,((*Flow_index_pt)+1.0))*(*Flow_index_pt)*
495 pow((*Critical_second_invariant_pt),4.0)*
496 pow((*Critical_second_invariant_pt),(((*Flow_index_pt)+4.0)/2.0))-
497 12.0*pow(2.0,(*Flow_index_pt))*pow((*Critical_second_invariant_pt),3.0)*
498 pow((*Critical_second_invariant_pt),(((*Flow_index_pt)+6.0)/2.0))-
499 2.0*(*Yield_stress_pt)*pow((*Critical_second_invariant_pt),4.0)*
500 pow((*Critical_second_invariant_pt),2.0)-12.0*(*Yield_stress_pt)*
501 pow((*Critical_second_invariant_pt),3.0)*
502 pow((*Critical_second_invariant_pt),3.0));
508 second_invariant_of_rate_of_strain_tensor)
514 calculate_fitting_parameters_of_cubic(a,b);
516 double zero_shear_viscosity=calculate_zero_shear_viscosity();
521 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
528 if(sign*second_invariant_of_rate_of_strain_tensor <
529 (*Critical_second_invariant_pt))
531 return a*pow(sign*second_invariant_of_rate_of_strain_tensor,3.0)+
532 b*pow(sign*second_invariant_of_rate_of_strain_tensor,2.0)+
533 zero_shear_viscosity;
539 double measure_of_rate_of_strain=
540 sqrt(sign*second_invariant_of_rate_of_strain_tensor);
542 return (*Yield_stress_pt)/(2.0*measure_of_rate_of_strain)+
543 pow((2.0*measure_of_rate_of_strain),*Flow_index_pt-1.0);
549 (
const double& second_invariant_of_rate_of_strain_tensor)
555 calculate_fitting_parameters_of_cubic(a,b);
560 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
565 if(sign*second_invariant_of_rate_of_strain_tensor <
566 (*Critical_second_invariant_pt))
568 return sign*3.0*a*pow(sign*second_invariant_of_rate_of_strain_tensor,2.0)+
569 2.0*b*second_invariant_of_rate_of_strain_tensor;
573 return pow(2.0,(*Flow_index_pt)-2.0)*((*Flow_index_pt)-1.0)*
574 second_invariant_of_rate_of_strain_tensor*
575 pow(sign*second_invariant_of_rate_of_strain_tensor,
576 ((*Flow_index_pt)-1.0)/2.0-2.0)-
577 (*Yield_stress_pt)*second_invariant_of_rate_of_strain_tensor/
578 (4.0*pow(sign*second_invariant_of_rate_of_strain_tensor,5.0/2.0));
590 template<
unsigned DIM>
609 (
double* yield_stress_pt,
double* flow_index_pt,
610 double* exponential_parameter_pt) :
612 Yield_stress_pt(yield_stress_pt), Flow_index_pt(flow_index_pt),
613 Exponential_parameter_pt(exponential_parameter_pt){}
616 second_invariant_of_rate_of_strain_tensor)
619 double measure_of_rate_of_strain=
620 sqrt(std::fabs(second_invariant_of_rate_of_strain_tensor));
622 return (1.0-exp(-2.0*(*Exponential_parameter_pt)*
623 measure_of_rate_of_strain))/(2.0*measure_of_rate_of_strain)*
625 (1.0-exp(-2.0*(*Exponential_parameter_pt)*
626 measure_of_rate_of_strain))/(2.0*measure_of_rate_of_strain)*
627 pow((2.0*measure_of_rate_of_strain),*Flow_index_pt);
637 template<
unsigned DIM>
657 (
double* yield_stress_pt,
double* flow_index_pt,
658 double* zero_shear_viscosity_pt) :
660 Yield_stress_pt(yield_stress_pt), Flow_index_pt(flow_index_pt),
661 Zero_shear_viscosity_pt(zero_shear_viscosity_pt){}
665 second_invariant_of_rate_of_strain_tensor)
673 if(second_invariant_of_rate_of_strain_tensor == 0.0)
678 else if(second_invariant_of_rate_of_strain_tensor > 0.0)
685 double measure_of_rate_of_strain=
686 sqrt(sign*(second_invariant_of_rate_of_strain_tensor+eps));
688 return (1.0-exp(-(*Zero_shear_viscosity_pt)*
689 2.0*measure_of_rate_of_strain/(*Yield_stress_pt)))*
690 ((*Yield_stress_pt)/(2.0*measure_of_rate_of_strain)+
691 pow((2.0*measure_of_rate_of_strain),*Flow_index_pt-1.0));
697 (
const double& second_invariant_of_rate_of_strain_tensor)
705 if(second_invariant_of_rate_of_strain_tensor == 0.0)
710 else if(second_invariant_of_rate_of_strain_tensor > 0.0)
717 double measure_of_rate_of_strain=
718 sqrt(sign*(second_invariant_of_rate_of_strain_tensor+eps));
720 return (1.0-exp(-(*Zero_shear_viscosity_pt)*
721 2.0*measure_of_rate_of_strain/(*Yield_stress_pt)))*
722 (sign*pow(2.0,(*Flow_index_pt)-2.0)*((*Flow_index_pt)-1.0)*
723 pow(sign*(second_invariant_of_rate_of_strain_tensor+eps),
724 ((*Flow_index_pt)-1.0)/2.0-1.0)-sign*(*Yield_stress_pt)/
725 (4.0*pow(sign*(second_invariant_of_rate_of_strain_tensor+eps),3.0/2.0)))+
726 sign*(((*Zero_shear_viscosity_pt)*
727 exp(-(*Zero_shear_viscosity_pt)*
728 2.0*measure_of_rate_of_strain/(*Yield_stress_pt)))/
729 ((*Yield_stress_pt)*measure_of_rate_of_strain))*
730 (pow(2.0,(*Flow_index_pt)-1.0)*
731 pow(sign*(second_invariant_of_rate_of_strain_tensor+eps),
732 ((*Flow_index_pt)-1.0)/2.0)+
733 (*Yield_stress_pt)/(2.0*measure_of_rate_of_strain));
745 template<
unsigned DIM>
767 (
double* alpha_pt,
double* flow_index_pt,
768 double* critical_second_invariant_pt) :
770 Alpha_pt(alpha_pt), Flow_index_pt(flow_index_pt),
771 Critical_second_invariant_pt(critical_second_invariant_pt)
775 double cut_off_viscosity=calculate_cutoff_viscosity();
778 double zero_shear_viscosity=calculate_zero_shear_viscosity();
780 oomph_info <<
"SiskoTanMilRegWithBlendingConstitutiveEquation: " 781 <<
" zero shear viscosity = " << zero_shear_viscosity
784 oomph_info <<
"SiskoTanMilRegWithBlendingConstitutiveEquation: " 785 <<
" cut off viscosity = " << cut_off_viscosity
789 <<
" cutoff invariant = " 790 << *Critical_second_invariant_pt
802 return 1.0+(*Alpha_pt)*pow((2.0*sqrt((*Critical_second_invariant_pt))),
811 return cut_off_viscosity/5.0;
818 double cut_off_viscosity=calculate_cutoff_viscosity();
822 double epsilon=calculate_viscosity_offset_at_zero_shear(cut_off_viscosity);
824 return cut_off_viscosity+epsilon;
829 double& cut_off_viscosity,
830 double& zero_shear_viscosity)
832 cut_off_invariant=*Critical_second_invariant_pt;
833 cut_off_viscosity=calculate_cutoff_viscosity();
834 zero_shear_viscosity=calculate_zero_shear_viscosity();
841 double Cut_off_viscosity=calculate_cutoff_viscosity();
844 double epsilon=calculate_viscosity_offset_at_zero_shear(Cut_off_viscosity);
846 a=1.0/(4.0*pow((*Critical_second_invariant_pt),3.0)*
847 pow((*Critical_second_invariant_pt),5.0/2.0))*
848 (8.0*(Cut_off_viscosity+epsilon-1.0)*
849 pow((*Critical_second_invariant_pt),5.0/2.0)+
850 pow(2.0,(*Flow_index_pt))*((*Flow_index_pt)-1.0)*
851 (*Alpha_pt)*pow((*Critical_second_invariant_pt),2.0)*
852 pow((*Critical_second_invariant_pt),(*Flow_index_pt)/2.0)-
853 pow(2.0,(*Flow_index_pt)+2.0)*(*Alpha_pt)*
854 pow((*Critical_second_invariant_pt),(*Flow_index_pt)/2.0+2.0));
856 b=1.0/(4.0*pow((*Critical_second_invariant_pt),2.0)*
857 pow((*Critical_second_invariant_pt),5.0/2.0))*
858 (-12.0*(Cut_off_viscosity+epsilon-1.0)*
859 pow((*Critical_second_invariant_pt),5.0/2.0)-
860 pow(2.0,(*Flow_index_pt))*((*Flow_index_pt)-1.0)*
861 (*Alpha_pt)*pow((*Critical_second_invariant_pt),2.0)*
862 pow((*Critical_second_invariant_pt),(*Flow_index_pt)/2.0)+
863 3.0*pow(2.0,(*Flow_index_pt)+1.0)*(*Alpha_pt)*
864 pow((*Critical_second_invariant_pt),(*Flow_index_pt)/2.0+2.0));
870 second_invariant_of_rate_of_strain_tensor)
876 calculate_fitting_parameters_of_cubic(a,b);
878 double zero_shear_viscosity=calculate_zero_shear_viscosity();
883 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
890 if(sign*second_invariant_of_rate_of_strain_tensor <
891 (*Critical_second_invariant_pt))
893 return a*pow(sign*second_invariant_of_rate_of_strain_tensor,3.0)+
894 b*pow(sign*second_invariant_of_rate_of_strain_tensor,2.0)+
895 zero_shear_viscosity;
901 double measure_of_rate_of_strain=
902 sqrt(sign*second_invariant_of_rate_of_strain_tensor);
904 return 1.0+(*Alpha_pt)*pow((2.0*measure_of_rate_of_strain),
911 (
const double& second_invariant_of_rate_of_strain_tensor)
917 calculate_fitting_parameters_of_cubic(a,b);
922 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
927 if(sign*second_invariant_of_rate_of_strain_tensor <
928 (*Critical_second_invariant_pt))
930 return sign*3.0*a*pow(sign*second_invariant_of_rate_of_strain_tensor,2.0)+
931 2.0*b*second_invariant_of_rate_of_strain_tensor;
935 return (*Alpha_pt)*pow(2.0,(*Flow_index_pt)-2.0)*((*Flow_index_pt)-1.0)*
936 second_invariant_of_rate_of_strain_tensor*
937 pow(sign*second_invariant_of_rate_of_strain_tensor,
938 ((*Flow_index_pt)-1.0)/2.0-2.0);
950 template<
unsigned DIM>
969 (
double* yield_stress_pt,
double* critical_second_invariant_pt) :
971 Yield_stress_pt(yield_stress_pt),
972 Critical_second_invariant_pt(critical_second_invariant_pt)
976 double cut_off_viscosity=calculate_cutoff_viscosity();
979 double zero_shear_viscosity=calculate_zero_shear_viscosity();
981 oomph_info <<
"CassonTanMilRegWithBlendingConstitutiveEquation: " 982 <<
" zero shear viscosity = " << zero_shear_viscosity
985 oomph_info <<
"CassonTanMilRegWithBlendingConstitutiveEquation: " 986 <<
" cut off viscosity = " << cut_off_viscosity
990 <<
" cutoff invariant = " 991 << *Critical_second_invariant_pt
1003 return (*Yield_stress_pt)/(2.0*sqrt(*Critical_second_invariant_pt))+
1004 2.0*sqrt(*Yield_stress_pt/(2.0*sqrt(*Critical_second_invariant_pt)))+1.0;
1012 return cut_off_viscosity/5.0;
1019 double cut_off_viscosity=calculate_cutoff_viscosity();
1023 double epsilon=calculate_viscosity_offset_at_zero_shear(cut_off_viscosity);
1025 return cut_off_viscosity+epsilon;
1030 double& cut_off_viscosity,
1031 double& zero_shear_viscosity)
1033 cut_off_invariant=*Critical_second_invariant_pt;
1034 cut_off_viscosity=calculate_cutoff_viscosity();
1035 zero_shear_viscosity=calculate_zero_shear_viscosity();
1042 double Cut_off_viscosity=calculate_cutoff_viscosity();
1045 double epsilon=calculate_viscosity_offset_at_zero_shear(Cut_off_viscosity);
1047 a=1.0/pow(*Critical_second_invariant_pt,39.0/4.0)*
1048 (pow(*Critical_second_invariant_pt,27.0/4.0)*
1049 (2.0*(Cut_off_viscosity+epsilon)-2.0*sqrt(2.0)*
1050 sqrt(*Yield_stress_pt/sqrt(*Critical_second_invariant_pt))-2.0)-
1051 5.0/4.0*(*Yield_stress_pt)*pow(*Critical_second_invariant_pt,25.0/4.0)-
1052 1.0/(2.0*sqrt(2.0))*sqrt(*Yield_stress_pt)*
1053 pow(*Critical_second_invariant_pt,13.0/2.0));
1055 b=1.0/pow(*Critical_second_invariant_pt,27.0/4.0)*
1056 (pow(*Critical_second_invariant_pt,19.0/4.0)*
1057 (-3.0*(Cut_off_viscosity+epsilon)+3.0*sqrt(2.0)*
1058 sqrt(*Yield_stress_pt/sqrt(*Critical_second_invariant_pt))+3.0)+
1059 7.0/4.0*(*Yield_stress_pt)*pow(*Critical_second_invariant_pt,17.0/4.0)+
1060 1.0/(2.0*sqrt(2.0))*sqrt(*Yield_stress_pt)*
1061 pow(*Critical_second_invariant_pt,9.0/2.0));
1067 second_invariant_of_rate_of_strain_tensor)
1073 calculate_fitting_parameters_of_cubic(a,b);
1075 double zero_shear_viscosity=calculate_zero_shear_viscosity();
1080 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
1087 if(sign*second_invariant_of_rate_of_strain_tensor <
1088 (*Critical_second_invariant_pt))
1090 return a*pow(sign*second_invariant_of_rate_of_strain_tensor,3.0)+
1091 b*pow(sign*second_invariant_of_rate_of_strain_tensor,2.0)+
1092 zero_shear_viscosity;
1098 double measure_of_rate_of_strain=
1099 sqrt(sign*second_invariant_of_rate_of_strain_tensor);
1101 return *Yield_stress_pt/(2.0*measure_of_rate_of_strain)+
1102 2.0*sqrt(*Yield_stress_pt/(2.0*measure_of_rate_of_strain))+1.0;
1108 (
const double& second_invariant_of_rate_of_strain_tensor)
1114 calculate_fitting_parameters_of_cubic(a,b);
1119 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
1124 if(sign*second_invariant_of_rate_of_strain_tensor <
1125 (*Critical_second_invariant_pt))
1127 return sign*3.0*a*pow(sign*second_invariant_of_rate_of_strain_tensor,2.0)+
1128 2.0*b*second_invariant_of_rate_of_strain_tensor;
1132 return -sqrt(*Yield_stress_pt)*
1133 second_invariant_of_rate_of_strain_tensor/
1135 pow(sign*second_invariant_of_rate_of_strain_tensor,9.0/4.0))-
1136 (*Yield_stress_pt)*second_invariant_of_rate_of_strain_tensor/
1137 (4.0*pow(sign*second_invariant_of_rate_of_strain_tensor,5.0/2.0));
1147 template<
unsigned DIM>
1166 (
double* mu_inf_pt,
double* mu_0_pt,
double* alpha_pt) :
1168 Mu_inf_pt(mu_inf_pt), Mu_0_pt(mu_0_pt), Alpha_pt(alpha_pt){}
1171 second_invariant_of_rate_of_strain_tensor)
1173 return (*Mu_inf_pt)+((*Mu_0_pt)-(*Mu_inf_pt))*
1174 exp(-(*Alpha_pt)*second_invariant_of_rate_of_strain_tensor);
1178 (
const double& second_invariant_of_rate_of_strain_tensor)
1189 return (*Alpha_pt)*((*Mu_inf_pt)-(*Mu_0_pt))*
1190 exp(-(*Alpha_pt)*second_invariant_of_rate_of_strain_tensor);
1199 template<
unsigned DIM>
1222 (
double* mu_inf_pt,
double* mu_0_pt,
double* alpha_pt,
1223 double* critical_second_invariant_pt) :
1225 Mu_inf_pt(mu_inf_pt), Mu_0_pt(mu_0_pt), Alpha_pt(alpha_pt),
1226 Critical_second_invariant_pt(critical_second_invariant_pt){}
1229 second_invariant_of_rate_of_strain_tensor)
1234 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
1239 return ((*Mu_0_pt)-(*Mu_inf_pt))/2.0*
1240 tanh(((*Critical_second_invariant_pt)-sign*
1241 second_invariant_of_rate_of_strain_tensor)*(*Alpha_pt))-
1242 ((*Mu_0_pt)-(*Mu_inf_pt))/2.0+(*Mu_0_pt);
1246 (
const double& second_invariant_of_rate_of_strain_tensor)
1251 if(second_invariant_of_rate_of_strain_tensor >= 0.0)
1256 return -sign*((*Mu_0_pt)-(*Mu_inf_pt))*10.0/
1257 (2.0*(*Critical_second_invariant_pt))*
1258 1.0/cosh(((*Critical_second_invariant_pt)-sign*
1259 second_invariant_of_rate_of_strain_tensor)*(*Alpha_pt))*
1260 1.0/cosh(((*Critical_second_invariant_pt)-sign*
1261 second_invariant_of_rate_of_strain_tensor)*(*Alpha_pt));
double * Mu_0_pt
zero shear rate viscosity
A Base class defining the generalise Newtonian constitutive relation.
PowerLawBerEngRegConstitutiveEquation(double *power_pt, double *reg_par_pt)
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
Viscosity ratio as a fct of strain rate invariant.
double * Yield_stress_pt
yield stress tau_y
virtual ~GeneralisedNewtonianConstitutiveEquation()
Empty virtual destructor.
double * Flow_index_pt
power law index n
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
double calculate_zero_shear_viscosity()
Function that calculates the viscosity at zero I2.
double calculate_viscosity_offset_at_zero_shear(double &cut_off_viscosity)
double * Alpha_pt
parameter that controls the steepness of the curve
double * Flow_index_pt
Power law index n.
double * Exponential_parameter_pt
Regularisation parameter m >> 1.
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
Viscosity ratio as a fct of strain rate invariant.
double * Mu_inf_pt
high shear rate viscosity
double * Critical_second_invariant_pt
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
in the Newtonian case the viscosity is constant
double * Regularisation_parameter_pt
regularisation parameter e << 1
virtual double dviscosity_dinvariant(const double &second_invariant_of_rate_of_strain_tensor)=0
double * Regularisation_parameter_pt
regularisation parameter e << 1
void report_cut_off_values(double &cut_off_invariant, double &cut_off_viscosity, double &zero_shear_viscosity)
Report cutoff values.
double calculate_cutoff_viscosity()
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
Viscosity ratio as a fct of strain rate invariant.
double * Flow_index_pt
power law index n
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
Viscosity ratio as a fct of strain rate invariant.
double * Yield_stress_pt
Yield stress.
double * Critical_second_invariant_pt
GeneralisedNewtonianConstitutiveEquation()
Empty constructor.
double * Yield_stress_pt
yield stress tau_y
double calculate_viscosity_offset_at_zero_shear(double &cut_off_viscosity)
void report_cut_off_values(double &cut_off_invariant, double &cut_off_viscosity, double &zero_shear_viscosity)
Report cutoff values.
double calculate_cutoff_viscosity()
double * Critical_second_invariant_pt
double calculate_cut_off_viscosity()
Function that calculates the cut off viscosity.
double * Mu_0_pt
zero shear rate viscosity
double calculate_zero_shear_viscosity()
Function that calculates the viscosity at zero I2.
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
Viscosity ratio as a fct of strain rate invariant.
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
double * Flow_index_pt
power law index n
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
double * Flow_index_pt
power law index n
NewtonianConstitutiveEquation(const double &viscosity_ratio=1.0)
Constructor: specify viscosity ratio (defaults to one)
double calculate_zero_shear_viscosity()
Function that calculates the viscosity at zero I2.
void report_cut_off_values(double &cut_off_invariant, double &cut_off_viscosity, double &zero_shear_viscosity)
Report cutoff values.
void calculate_fitting_parameters_of_cubic(double &a, double &b)
double calculate_cutoff_viscosity()
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
double * Critical_second_invariant_pt
double Viscosity_ratio
Viscosity ratio.
double * Mu_inf_pt
high shear rate viscosity
double viscosity(const double &second_invariant_of_rate_of_strain_tensor)
double * Flow_index_pt
power law index n
double * Yield_stress_pt
yield stress tau_y
double * Yield_stress_pt
Yield stress tau_y.
virtual double viscosity(const double &second_invariant_of_rate_of_strain_tensor)=0
double * Alpha_pt
pre-factor alpha
double * Zero_shear_viscosity_pt
the viscosity at zero shear rate
double * Yield_stress_pt
yield stress tau_y
double * Critical_second_invariant_pt
void calculate_fitting_parameters_of_cubic(double &a, double &b)
void report_cut_off_values(double &cut_off_invariant, double &cut_off_viscosity)
Report cutoff values.
void calculate_fitting_parameters_of_cubic(double &a, double &b)
double * Power_pt
power law index n
double calculate_viscosity_offset_at_zero_shear(double &cut_off_viscosity)