How to handle variable coupling shape functions

46 views
Skip to first unread message

Christopher Wong

unread,
Sep 29, 2020, 9:03:09 PM9/29/20
to moose-users
Hello all,

I am trying to devise a new beam element (a higher-order Timoshenko beam). In this formulation, I am using Hermitian shape functions to operate on the transverse deflections and the small rotations due to bending.

How should I properly set up a variable, disp_y, disp_z, rot_y, and rot_z, such that they are interpolated like

disp_y(xi) ~ H1 * disp_y0 + H2 * rot_z0 + H3 * disp_y1 + H4 * rot_z1

rot_z(xi) ~ dH1/dxi * disp_y0 + dH2/dxi * rot_z0 + dH3/dxi * disp_y1 + dH4/dxi * rot_z1

where H_i are the Hermite shape functions, which are cubic on xi, and dH_i/dxi are their derivatives, which are, obviously, quadratic. The 0 and 1 indices on the variables represent nodal values.

Is this something I handle in the kernel/materials themselves or does MOOSE have a way of handling this type of polynomial approximation?

In contrast to MOOSE's current beam element, I don't want to interpolate strains/stresses in the principal coordinate system and I don't want to manually build the Jacobian using the stiffness matrix. I want to take advantage of MOOSE and program the weak form and evaluate gaussian integrals at quadrature points. The stiffness matrix should arise from this procedure. 

Swetha Veeraraghavan

unread,
Oct 6, 2020, 1:31:24 AM10/6/20
to moose-users
Hi Chris, 

For the C0 timoshenko beam element, I carried out the interpolation within the kernels/materials. As you mentioned, this is a little messy as you have to manually do the integration and coordinate transformations. 

The computation of variable values, time derivatives etc at quadrature points for normal variables happens in the computeValues function of framework/src/variables/MooseVariableData.C. But I haven't seen a routine here whether the variable value at a qp is obtained using nodal values from different variables. That is, disp_x[qp] is only a function of disp_x at the nodal points, not disp_x and disp_y at nodal points. So, I don't think there is a more general method to handle these interpolations. Maybe others can suggest better methods to handle this interpolation. 

Regards,
Swetha

Christopher Wong

unread,
Oct 6, 2020, 12:19:09 PM10/6/20
to moose-users
Thank you Swetha. I did not know this about computeValues, so this is helpful! 

Perhaps I can somehow define a new routine to handle this case...

Reply all
Reply to author
Forward
0 new messages