Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
PowerLaw_decl.hpp
1#ifndef POWERLAW_DECL_hpp
2#define POWERLAW_DECL_hpp
3
4#include "feddlib/core/General/DifferentiableFuncClass.hpp"
5// #include "feddlib/core/AceFemAssembly/Helper.hpp"
6#include "feddlib/core/FEDDCore.hpp"
7
8namespace FEDD
9{
10
65
66
67 template <class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
68 class PowerLaw : public DifferentiableFuncClass<SC, LO, GO, NO>
69 {
70 public:
71 typedef MultiVector<SC, LO, GO, NO> MultiVector_Type;
72 typedef Teuchos::RCP<MultiVector_Type> MultiVectorPtr_Type;
73 typedef Teuchos::RCP<const MultiVector_Type> MultiVectorConstPtr_Type;
74
75 typedef DifferentiableFuncClass<SC, LO, GO, NO> DifferentiableFuncClass_Type;
76
77 // Inherited Function from base abstract class
78
84 void setParams(ParameterListPtr_Type params) override;
85
92 void evaluateMapping(ParameterListPtr_Type params, double shearRate, double &viscosity) override;
101 void evaluateDerivative(ParameterListPtr_Type params, double shearRate, double &res) override;
102
106 void echoInformationMapping() override;
107
108 // New Added Functions
109 /*
110 \brief Get the current viscosity value
111 \return the scalar value of viscosity
112 */
113 double getViscosity() { return viscosity_; };
114
119 PowerLaw(ParameterListPtr_Type parameters);
120
121 private:
122 double viscosity_;
123 std::string shearThinningModel_; // for printing out which model is actually used
125 double powerlaw_index_n; // corresponds to n in the formulas being the power-law index
126 double powerlaw_constant_K; // is the zero shear-rate viscosity
127 double nu_infty; // is the artificial infinite shear-rate viscosity needed for making bounds for the viscosity
128 double nu_zero; // is the artificial zero shear-rate viscosity needed for making bounds for the viscosity
129 double shear_rate_limitZero;
130
131 };
132
133}
134#endif
DifferentiableFuncClass(ParameterListPtr_Type parameters)
Definition DifferentiableFuncClass_def.hpp:10
Definition MultiVector_decl.hpp:36
PowerLaw(ParameterListPtr_Type parameters)
Constructor for CarreauYasuda.
Definition PowerLaw_def.hpp:9
void evaluateMapping(ParameterListPtr_Type params, double shearRate, double &viscosity) override
Update the viscosity according to a chosen shear thinning generalized newtonian constitutive equation...
Definition PowerLaw_def.hpp:30
void echoInformationMapping() override
Print parameter values used in model at runtime.
Definition PowerLaw_def.hpp:85
void setParams(ParameterListPtr_Type params) override
Each constitutive model includes different material parameters which will be specified in parametersP...
Definition PowerLaw_def.hpp:69
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 PowerLaw_def.hpp:51
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5