void beam_PK1_stress_function(TensorValue<double>& PP, const TensorValue<double>& FF, const libMesh::Point& /*X*/, const libMesh::Point& s, Elem* const /*elem*/, const vector<NumericVector<double>*>& /*system_data*/, double /*time*/, void* /*ctx*/) { const double r = sqrt((s(0) - 0.2) * (s(0) - 0.2) + (s(1) - 0.2) * (s(1) - 0.2)); if (r > 0.05) { static const TensorValue<double> II(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); const TensorValue<double> CC = FF.transpose() * FF; const TensorValue<double> EE = 0.5 * (CC - II); const TensorValue<double> SS = lambda_s * EE.tr() * II + 2.0 * mu_s * EE; PP = FF * SS; } else { PP.zero(); } return; } // beam_PK1_stress_function
void upper_PK1_stress_function( TensorValue<double>& PP, const TensorValue<double>& FF, const libMesh::Point& /*X*/, const libMesh::Point& s, Elem* const /*elem*/, const vector<NumericVector<double>*>& /*system_data*/, double /*time*/, void* /*ctx*/) { if (s(0) > 5.0 && s(0) < 10.0) { static const TensorValue<double> II(1.0,0.0,0.0, 0.0,1.0,0.0, 0.0,0.0,1.0); const TensorValue<double> CC = FF.transpose()*FF; const TensorValue<double> EE = 0.5*(CC - II); const TensorValue<double> SS = lambda_s*EE.tr()*II + 2.0*mu_s*EE; PP = FF*SS; } else { PP.zero(); } return; }// upper_PK1_stress_function
void beam_PK1_dil_stress_function(TensorValue<double>& PP, const TensorValue<double>& FF, const libMesh::Point& /*X*/, const libMesh::Point& /*s*/, Elem* const /*elem*/, const vector<NumericVector<double>*>& /*system_data*/, double /*time*/, void* /*ctx*/) { double J = FF.det(); J_dil_min = std::min(J, J_dil_min); J_dil_max = std::max(J, J_dil_max); PP.zero(); if (!MathUtilities<double>::equalEps(beta_s, 0.0)) { const TensorValue<double> FF_inv_trans = tensor_inverse_transpose(FF, NDIM); PP -= 2.0 * beta_s * log(FF.det()) * FF_inv_trans; } return; } // beam_PK1_dil_stress_function