@@ -12,10 +12,6 @@ void ChamberSphere::setup_dofs(DOFHandler& dofhandler) {
1212
1313void 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);
1915 system.E .coeffRef (global_eqn_ids[2 ], global_var_ids[5 ]) = 1 ;
2016 system.E .coeffRef (global_eqn_ids[3 ], global_var_ids[6 ]) = -1 ;
2117 system.F .coeffRef (global_eqn_ids[0 ], global_var_ids[2 ]) = -1 ;
@@ -30,35 +26,30 @@ void ChamberSphere::update_constant(SparseSystem& system,
3026
3127void ChamberSphere::update_time (SparseSystem& system,
3228 std::vector<double >& parameters) {
29+ const double gamma_sigma_max = parameters[global_param_ids[ParamId::gamma_sigma_max]];
30+
3331 // active stress
3432 get_elastance_values (parameters);
3533 system.F .coeffRef (global_eqn_ids[2 ], global_var_ids[5 ]) = act;
34+ system.C .coeffRef (global_eqn_ids[2 ]) = -act_plus*gamma_sigma_max;
3635}
3736
3837void ChamberSphere::update_solution (
3938 SparseSystem& system, std::vector<double >& parameters,
4039 const Eigen::Matrix<double , Eigen::Dynamic, 1 >& y,
4140 const Eigen::Matrix<double , Eigen::Dynamic, 1 >& dy) {
4241 const double prestress = parameters[global_param_ids[ParamId::prestress]];
43- const double gamma_W1 = parameters[global_param_ids[ParamId::gamma_W1]];
44- const double gamma_eta = parameters[global_param_ids[ParamId::gamma_eta]];
4542 const double volume0 = parameters[global_param_ids[ParamId::volume0]];
46- const double gamma_sigma_max = parameters[global_param_ids[ParamId::gamma_sigma_max]];
47- const double n = parameters[global_param_ids[ParamId::n]];
48- const double volume = y[global_var_ids[6 ]];
49- const double dvolume_dt = dy[global_var_ids[6 ]];
50- const double stress = y[global_var_ids[4 ]];
43+ const double gamma_W1 = parameters[global_param_ids[ParamId::gamma_W1]];
5144 const double Pout = y[global_var_ids[2 ]];
52- 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;
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;
54- system.dC_dy .coeffRef (global_eqn_ids[0 ], global_var_ids[2 ]) = 1 - pow ((volume + volume0)/volume0, (2.0 /3.0 )/n);
55- system.dC_dy .coeffRef (global_eqn_ids[0 ], global_var_ids[4 ]) = pow ((volume + volume0)/volume0, (1.0 /3.0 )/n) - 1 ;
56- 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));
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);
59-
60- // active stress
61- system.C .coeffRef (global_eqn_ids[2 ]) = -act_plus*gamma_sigma_max;
45+ const double stress = y[global_var_ids[4 ]];
46+ const double volume = y[global_var_ids[6 ]];
47+ system.C .coeffRef (global_eqn_ids[0 ]) = -Pout*pow ((volume + volume0)/volume0, 0.66666666666666663 ) + Pout + stress*pow ((volume + volume0)/volume0, 0.33333333333333331 ) - stress;
48+ system.C .coeffRef (global_eqn_ids[1 ]) = -4 *gamma_W1*pow (volume/volume0 + 1 , -2.0 ) + 4 *gamma_W1 + prestress;
49+ system.dC_dy .coeffRef (global_eqn_ids[0 ], global_var_ids[2 ]) = 1 - pow ((volume + volume0)/volume0, 0.66666666666666663 );
50+ system.dC_dy .coeffRef (global_eqn_ids[0 ], global_var_ids[4 ]) = pow ((volume + volume0)/volume0, 0.33333333333333331 ) - 1 ;
51+ system.dC_dy .coeffRef (global_eqn_ids[0 ], global_var_ids[6 ]) = (-0.66666666666666663 *Pout*pow ((volume + volume0)/volume0, 0.66666666666666663 ) + 0.33333333333333331 *stress*pow ((volume + volume0)/volume0, 0.33333333333333331 ))/(volume + volume0);
52+ system.dC_dy .coeffRef (global_eqn_ids[1 ], global_var_ids[6 ]) = 8.0 *gamma_W1*pow ((volume + volume0)/volume0, -3.0 )/volume0;
6253}
6354
6455void ChamberSphere::get_elastance_values (std::vector<double >& parameters) {
0 commit comments