Hi Jean-Pau, You’re always helpful. The deformation dependent loads are discussed in Wriggers, Wood and some other books and papers. I’m studying that. It seems the formulation is complicated. I believe that the auto-differentiation tools is a good approach to this nonlinear problem and I’ll dig
Hi Michael,
I’m glad that you’re on the right track now.
> If you could give some advice or refer to some references on this topic, I
> would appreciate that very mush.
Unfortunately, this is where pretty much I hit the limit of what I can say on
this topic as it would conflict with the
Hi Jean-Paul, Yes, I set up the boundary check when taking care of the traction. It worked as expected using Physics::Transformations::nansons_formula(face_normal, F). To make a quick test, I did not linearize the load stiffness but just used the load at last Newton-Raphson step, so it is like a
Hi Michael,
The one thing that stands out about the snippet of code that you shared is that
there is no check to
if (cell->face(face)->at_boundary() == true && )...
Do you still have something like that?
Otherwise, after a cursory glance, everything appears to be alright with this.
It mimics
Hi Jean-Paul, Thank you for your hints. I initialized a local variable solution_grads_u_face_total with fe_face_values_ref[u_fe].get_function_gradients to get the gradient of displacement at the quadrature point on the face (see codes below). But the gradient acquired is not sensible and the
Hi Michael,
The problem here is that “scratch.solution_grads_u_total” is initialised with
the cell FEValues, and so has n_cell_quadrature_points entries. You need to
pass
"scratch.fe_face_values_ref[u_fe].get_function_gradients(scratch.solution_total,
scratch.solution_grads_u_total);”
Dear All,
I want to do a surface integration which needs to evaluate the gradients of
the solution on the face. The following code does not work
fe_face_values.*get_function_gradients*(solution,
solution_grads);
for (unsigned int f_q_point = 0; f_q_point <