Hello,
I’m trying to study the dynamic of a beam with initial twist and curvatures
(prebend) using ChElementBeamIGA.
First, I created a homogeneous beam with a circular section without neither
twist nor curvatures, clamped at one end and free at the other. In this
case, everything is perfectly working, the deformed shape in response of an
applied static load looks good. Furthermore, the modal analysis realised
using the matrices system.GetStiffnessMatrix(K) and system.GetMassMatrix(M)
gives the good modal frequencies (w2, vr = sp.linalg.eigh(K, M)).
However, when I introduce linear or non-linear twist to this beam, the
modal analysis doesn’t work anymore (w2 becomes negative).
To introduce the twist, I had given a quaternion to the frame of my nodes :
###
twist_angle = (self.twists[n_section] + self.twists[n_section+p])/2
t = (Coord_nodeB – Coord_nodeA)
t.Normalize()
tan_twist = np.tan(self.twists[i]/2)
m_rot_twist.Set_A_Rodriguez(t*tan_twist)
q_rot_twist = m_rot_twist.Get_A_quaternion()
# Assemblage
q_rot = q_rot_twist * q_rot_prebend
m_rot = chrono.ChMatrix33D()
m_rot.Set_A_quaternion(q_rot)
node = fea.ChNodeFEAxyzrot(chrono.ChFrameD(pos, m_rot))
###
I also added SectionRotation and ShearRotation to
ChElasticityCosseratAdvancedGenericFPM :
###
melasticity = fea.ChElasticityCosseratAdvancedGenericFPM(mKlaw, 0, 0, 0, 0,
0, 0) melasticity.SetSectionRotation(twist_angle)
melasticity.SetShearRotation(twist_angle)
###
As my beam has a circular section and has the same properties in y and z,
the twisted beam should be exactly the same that the untwisted beam.
However, it appears that the matrices are changed in such a way that the
modal analysis is not possible anymore.
I looked in the code and found two places where the twist affects the
matrices. The first one is the rotation of the material stiffness matrix in
:
###
void ChElasticityCosseratAdvancedGenericFPM::UpdateEMatrix() {
if (!updated) { // do it only once
// compute T
ComputeTransformMatrix();
// update Klaw after setting section rotation and EC/SC
offset
this->Klaw = this->T.transpose() * this->Klaw * this->T;
updated = true;
}
}
###
This matrix Klaw seemed to be rotated around the wrong axis for the shear
part and some coupling coefficient between shearZ and Torsion was
appearing. So, I changed the line 305 from
“RotShearA.Set_A_Rxyz(ChVector<>(this->beta, 0, 0));” to
“RotShearA.Set_A_Rxyz(ChVector<>(0, 0, this->beta));” but it did not
resolve my problem of modal analysis.
The second place where the twist affects the matrices is in
ChElementBeamIGA::ComputeInternalForces_impl with the use of the initial
strains this->strain_e_0[ig] and this->strain_k_0[ig] but I did not look
farther.
Whereas, when the initial twist is constant over the beam, the modal
analysis is working. As a results, it seems that the problem is appearing
when an element is confronted to variable twist.
Am I doing something wrong while giving my initial twist angle ?
Could you help me to solve this problem please ?
Best regards,
Nicolas
--
You received this message because you are subscribed to the Google Groups
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/projectchrono/d444393d-9351-4d13-b264-e54176e4ec06n%40googlegroups.com.