Skip to content

Commit 7a1b728

Browse files
Federica NinnoFederica Ninno
authored andcommitted
Re-introduction of viscosity term
1 parent 0875509 commit 7a1b728

3 files changed

Lines changed: 24 additions & 14 deletions

File tree

scripts/ChamberSphere.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ derivatives:
2424
constants:
2525
- n
2626
- volume0
27-
- gamma_W1_over_n # k = gamma_W1/n (identifiable effective stiffness; gamma_W1 = k*n)
27+
- gamma_W1
28+
- gamma_eta
2829
- gamma_sigma_max # gamma * sigma_max
2930
- act
3031
- act_plus
@@ -57,7 +58,7 @@ helper_functions: |
5758
5859
residuals:
5960
- stretch(volume) * stress - Pout * CG(volume)
60-
- -stress + tau + 4 * (1 - CG(volume) ** (-3)) * gamma_W1_over_n * n + prestress
61+
- -stress + tau + 4 * gamma_W1 * (1 - CG(volume) ** (-3)) + prestress + gamma_eta * dCG(volume, dvolume_dt) * (1 + 2 * CG(volume) ** (-6))
6162
- dtau_dt + act * tau - gamma_sigma_max * act_plus
6263
- Qin - Qout - dvolume_dt
6364
- Pin - Pout

src/model/ChamberSphere.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ void ChamberSphere::setup_dofs(DOFHandler& dofhandler) {
1212

1313
void ChamberSphere::update_constant(SparseSystem& system,
1414
std::vector<double>& parameters) {
15+
const double gamma_eta = parameters[global_param_ids[ParamId::gamma_eta]];
16+
const double volume0 = parameters[global_param_ids[ParamId::volume0]];
17+
const double n = parameters[global_param_ids[ParamId::n]];
18+
system.E.coeffRef(global_eqn_ids[1], global_var_ids[6]) = 2*gamma_eta/(n*volume0);
1519
system.E.coeffRef(global_eqn_ids[2], global_var_ids[5]) = 1;
1620
system.E.coeffRef(global_eqn_ids[3], global_var_ids[6]) = -1;
1721
system.F.coeffRef(global_eqn_ids[0], global_var_ids[2]) = -1;
@@ -36,19 +40,22 @@ void ChamberSphere::update_solution(
3640
const Eigen::Matrix<double, Eigen::Dynamic, 1>& y,
3741
const Eigen::Matrix<double, Eigen::Dynamic, 1>& dy) {
3842
const double prestress = parameters[global_param_ids[ParamId::prestress]];
39-
const double gamma_W1_over_n = parameters[global_param_ids[ParamId::gamma_W1_over_n]];
43+
const double gamma_W1 = parameters[global_param_ids[ParamId::gamma_W1]];
44+
const double gamma_eta = parameters[global_param_ids[ParamId::gamma_eta]];
4045
const double volume0 = parameters[global_param_ids[ParamId::volume0]];
4146
const double gamma_sigma_max = parameters[global_param_ids[ParamId::gamma_sigma_max]];
4247
const double n = parameters[global_param_ids[ParamId::n]];
4348
const double volume = y[global_var_ids[6]];
49+
const double dvolume_dt = dy[global_var_ids[6]];
4450
const double stress = y[global_var_ids[4]];
4551
const double Pout = y[global_var_ids[2]];
4652
system.C.coeffRef(global_eqn_ids[0]) = -Pout*pow((volume + volume0)/volume0, (2.0/3.0)/n) + Pout + stress*pow((volume + volume0)/volume0, (1.0/3.0)/n) - stress;
47-
system.C.coeffRef(global_eqn_ids[1]) = 4*gamma_W1_over_n*n - 4*gamma_W1_over_n*n*pow(volume/volume0 + 1, -2/n) + prestress;
53+
system.C.coeffRef(global_eqn_ids[1]) = -2*dvolume_dt*gamma_eta/(n*volume0) + (2.0/3.0)*dvolume_dt*gamma_eta*pow(volume/volume0 + 1, -(5.0/3.0)/n)*pow(volume/volume0 + 1, -1 + (7.0/3.0)/n)/(n*volume0) + (4.0/3.0)*dvolume_dt*gamma_eta*pow(volume/volume0 + 1, -(17.0/3.0)/n)*pow(volume/volume0 + 1, -1 + (7.0/3.0)/n)/(n*volume0) + 4*gamma_W1 - 4*gamma_W1*pow(volume/volume0 + 1, -2/n) + prestress;
4854
system.dC_dy.coeffRef(global_eqn_ids[0], global_var_ids[2]) = 1 - pow((volume + volume0)/volume0, (2.0/3.0)/n);
4955
system.dC_dy.coeffRef(global_eqn_ids[0], global_var_ids[4]) = pow((volume + volume0)/volume0, (1.0/3.0)/n) - 1;
5056
system.dC_dy.coeffRef(global_eqn_ids[0], global_var_ids[6]) = (1.0/3.0)*pow((volume + volume0)/volume0, (1.0/3.0)/n)*(-2*Pout*pow((volume + volume0)/volume0, (1.0/3.0)/n) + stress)/(n*(volume + volume0));
51-
system.dC_dy.coeffRef(global_eqn_ids[1], global_var_ids[6]) = 8*gamma_W1_over_n*pow((volume + volume0)/volume0, -2/n)/(volume + volume0);
57+
system.dC_dy.coeffRef(global_eqn_ids[1], global_var_ids[6]) = (2.0/9.0)*pow((volume + volume0)/volume0, -(17.0/3.0)/n)*(dvolume_dt*gamma_eta*pow((volume + volume0)/volume0, (19.0/3.0 - n)/n)*(2 - 3*n) - 2*dvolume_dt*gamma_eta*pow((volume + volume0)/volume0, (1.0/3.0)*(7 - 3*n)/n)*(3*n + 10) + 36*gamma_W1*n*volume0*pow((volume + volume0)/volume0, (11.0/3.0)/n))/(pow(n, 2)*volume0*(volume + volume0));
58+
system.dC_dydot.coeffRef(global_eqn_ids[1], global_var_ids[6]) = (2.0/3.0)*gamma_eta*pow((volume + volume0)/volume0, -(22.0/3.0)/n)*(-3*pow((volume + volume0)/volume0, (22.0/3.0)/n) + 2*pow((volume + volume0)/volume0, (4 - n)/n) + pow((volume + volume0)/volume0, (8 - n)/n))/(n*volume0);
5259

5360
// active stress
5461
system.C.coeffRef(global_eqn_ids[2]) = -act_plus*gamma_sigma_max;

src/model/ChamberSphere.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,14 +139,15 @@ class ChamberSphere : public Block {
139139
enum ParamId {
140140
n = 0,
141141
volume0 = 1,
142-
gamma_W1_over_n = 2,
143-
gamma_sigma_max = 3,
144-
prestress = 4,
145-
alpha_max = 5,
146-
alpha_min = 6,
147-
tsys = 7,
148-
tdias = 8,
149-
steepness = 9
142+
gamma_W1 = 2,
143+
gamma_eta = 3,
144+
gamma_sigma_max = 4,
145+
prestress = 5,
146+
alpha_max = 6,
147+
alpha_min = 7,
148+
tsys = 8,
149+
tdias = 9,
150+
steepness = 10
150151
};
151152

152153
/**
@@ -159,7 +160,8 @@ class ChamberSphere : public Block {
159160
: Block(id, model, BlockType::chamber_sphere, BlockClass::vessel,
160161
{{"n", InputParameter()},
161162
{"volume0", InputParameter()},
162-
{"gamma_W1_over_n", InputParameter()},
163+
{"gamma_W1", InputParameter()},
164+
{"gamma_eta", InputParameter()},
163165
{"gamma_sigma_max", InputParameter()},
164166
{"prestress", InputParameter()},
165167
{"alpha_max", InputParameter()},

0 commit comments

Comments
 (0)