svMultiPhysics
Loading...
Searching...
No Matches
set_viscosity_props.h
1// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
2// SPDX-License-Identifier: BSD-3-Clause
3
4///////////////////////////////////////////////////////////
5// S e t V i s c o s i t y P r o p e r t i e s //
6///////////////////////////////////////////////////////////
7//
8// The 'set_fluid_viscosity_props ' map defined here sets fluid
9// viscosity properties from values read in from a file.
10// The 'set_solid_viscosity_props ' map defined here sets solid
11// viscosity properties from values read in from a file.
12
13using SetFluidViscosityPropertiesMapType = std::map<consts::FluidViscosityModelType, std::function<void(Simulation*, FluidViscosityParameters&,
14 dmnType& lDmn)>>;
15
16SetFluidViscosityPropertiesMapType set_fluid_viscosity_props = {
17
18//---------------------------//
19// viscType_Const //
20//---------------------------//
21//
22{consts::FluidViscosityModelType::viscType_Const, [](Simulation* simulation, FluidViscosityParameters& params, dmnType& lDmn) -> void
23{
24 using namespace consts;
25 auto& com_mod = simulation->get_com_mod();
26
27 lDmn.fluid_visc.viscType = FluidViscosityModelType::viscType_Const;
28 lDmn.fluid_visc.mu_i = params.newtonian_model.constant_value.value();
29} },
30
31//---------------------------//
32// viscType_CY //
33//---------------------------//
34//
35{consts::FluidViscosityModelType::viscType_CY, [](Simulation* simulation, FluidViscosityParameters& params, dmnType& lDmn) -> void
36{
37 using namespace consts;
38 auto& com_mod = simulation->get_com_mod();
39 auto& model_params = params.carreau_yasuda_model;
40
41 lDmn.fluid_visc.viscType = FluidViscosityModelType::viscType_CY;
42
43 lDmn.fluid_visc.mu_i = model_params.limiting_high_shear_rate_viscosity.value();
44 lDmn.fluid_visc.mu_o = model_params.limiting_low_shear_rate_viscosity.value();
45 lDmn.fluid_visc.lam = model_params.shear_rate_tensor_multipler.value();
46 lDmn.fluid_visc.a = model_params.shear_rate_tensor_exponent.value();
47 lDmn.fluid_visc.n = model_params.power_law_index.value();
48
49 if (lDmn.fluid_visc.mu_i > lDmn.fluid_visc.mu_o) {
50 throw std::runtime_error("Unexpected inputs for Carreau-Yasuda model. "
51 "High shear-rate viscosity value (" + std::to_string(lDmn.fluid_visc.mu_i) +
52 " should be larger than low shear-rate value " + std::to_string(lDmn.fluid_visc.mu_i) + ".");
53 }
54
55} },
56
57//---------------------------//
58// viscType_Cass //
59//---------------------------//
60//
61{consts::FluidViscosityModelType::viscType_Cass, [](Simulation* simulation, FluidViscosityParameters& params, dmnType& lDmn) -> void
62{
63 using namespace consts;
64 auto& com_mod = simulation->get_com_mod();
65 auto& model_params = params.cassons_model;
66
67 lDmn.fluid_visc.viscType = FluidViscosityModelType::viscType_Cass;
68 lDmn.fluid_visc.mu_i = model_params.asymptotic_viscosity();
69 lDmn.fluid_visc.mu_o = model_params.yield_stress();
70
71 if (model_params.low_shear_rate_threshold.defined()) {
72 lDmn.fluid_visc.lam = model_params.low_shear_rate_threshold();
73 } else {
74 lDmn.fluid_visc.lam = 0.5;
75 }
76
77} },
78
79};
80
81
82
83
84
85using SetSolidViscosityPropertiesMapType = std::map<consts::SolidViscosityModelType, std::function<void(Simulation*, SolidViscosityParameters&,
86 dmnType& lDmn)>>;
87
88SetSolidViscosityPropertiesMapType set_solid_viscosity_props = {
89
90//---------------------------//
91// viscType_Newtonian //
92//---------------------------//
93//
94{consts::SolidViscosityModelType::viscType_Newtonian, [](Simulation* simulation, SolidViscosityParameters& params, dmnType& lDmn) -> void
95{
96 using namespace consts;
97 auto& com_mod = simulation->get_com_mod();
98
99 lDmn.solid_visc.viscType = SolidViscosityModelType::viscType_Newtonian;
100 lDmn.solid_visc.mu = params.newtonian_model.constant_value.value();
101} },
102
103//---------------------------//
104// viscType_Potential //
105//---------------------------//
106//
107{consts::SolidViscosityModelType::viscType_Potential, [](Simulation* simulation, SolidViscosityParameters& params, dmnType& lDmn) -> void
108{
109 using namespace consts;
110 auto& com_mod = simulation->get_com_mod();
111
112 lDmn.solid_visc.viscType = SolidViscosityModelType::viscType_Potential;
113 lDmn.solid_visc.mu = params.potential_model.constant_value.value();
114} },
115
116};
117
118
Definition Parameters.h:933
Definition Simulation.h:14
Definition Parameters.h:980
Domain type is to keep track with element belong to which domain and also different physical quantiti...
Definition ComMod.h:422